package cn.stylefeng.guns.modular.gui.controller;

import cn.hutool.core.date.DateTime;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.api.tool.OrderCodeFactory;
import cn.stylefeng.guns.modular.gui.entity.Cangge;
import cn.stylefeng.guns.modular.gui.entity.Order;
import cn.stylefeng.guns.modular.gui.model.params.OrderParam;
import cn.stylefeng.guns.modular.gui.service.CanggeService;
import cn.stylefeng.guns.modular.gui.service.GuigeService;
import cn.stylefeng.guns.modular.gui.service.OrderService;
import cn.stylefeng.guns.modular.gui.service.YueService;
import cn.stylefeng.roses.core.base.controller.BaseController;
import cn.stylefeng.roses.kernel.model.response.ResponseData;

import java.util.Calendar;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


/**
 * 订单管理控制器
 *
 * @author Dong
 * @Date 2023-06-09 14:52:13
 */
@Controller
@RequestMapping("/order")
public class OrderController extends BaseController {

    private String PREFIX = "/order";

    @Autowired
    private OrderService orderService;
    
    @Autowired
    private GuigeService guigeService;
    
    @Autowired
    private CanggeService canggeService;
    
    @Autowired
    private YueService yueService;

    /**
     * 跳转到主页面
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "/order.html";
    }

    /**
     * 新增页面
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @RequestMapping("/add")
    public String add(Model model) {
    	model.addAttribute("gg", guigeService.list());
    	model.addAttribute("yue", yueService.list());
        return PREFIX + "/order_add.html";
    }
    
    @RequestMapping("/xuqi")
    public String xuqi(Model model) {
    	model.addAttribute("yue", yueService.list());
        return PREFIX + "/xuqi.html";
    }

    /**
     * 编辑页面
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @RequestMapping("/edit")
    public String edit() {
        return PREFIX + "/order_edit.html";
    }

    /**
     * 新增接口
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @RequestMapping("/addItem")
    @ResponseBody
    public ResponseData addItem(OrderParam orderParam) {
    	
    	Cangge cg = canggeService.getById(orderParam.getCgId());
    	
    	orderParam.setCgStr(cg.getNum());
    	
    	
    	
    	Calendar cal = Calendar.getInstance();
    	cal.setTime(orderParam.getStarTime());
    	cal.add(Calendar.MONTH, orderParam.getHowlong());
    	orderParam.setEndTime(cal.getTime());
    	
    	orderParam.setUid(0L);
    	orderParam.setOrderNum(OrderCodeFactory.getOrderCode());
    	orderParam.setPaystate(1);
    	orderParam.setState(1);
    	orderParam.setCreateTime(new DateTime());
    	
    	
    	
    	
        this.orderService.add(orderParam);
        return ResponseData.success();
    }
    
    
    
    /**
     * 新增接口
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @RequestMapping("/xuqiItem")
    @ResponseBody
    public ResponseData xuqiItem(Long id,Integer yue) {
    	
    	Order o = orderService.getById(id);
    	
    	
    	Calendar cal = Calendar.getInstance();
    	cal.setTime(o.getEndTime());
    	cal.add(Calendar.MONTH, yue);
    	o.setEndTime(cal.getTime());
    	o.setHowlong(o.getHowlong()+yue);
    	o.setState(1);
    	
        this.orderService.updateById(o);
        return ResponseData.success();
    }

    /**
     * 编辑接口
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @RequestMapping("/editItem")
    @ResponseBody
    public ResponseData editItem(OrderParam orderParam) {
        this.orderService.update(orderParam);
        return ResponseData.success();
    }

    /**
     * 删除接口
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @RequestMapping("/delete")
    @ResponseBody
    public ResponseData delete(OrderParam orderParam) {
        this.orderService.delete(orderParam);
        return ResponseData.success();
    }
    
    /**
     * 删除接口
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @RequestMapping("/zhongzhi")
    @ResponseBody
    public ResponseData zhongzhi(Long id) {
    	
    	Order order = orderService.getById(id);
    	
    	order.setState(2);
    	
        this.orderService.updateById(order);
        return ResponseData.success();
    }

    /**
     * 查看详情接口
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @RequestMapping("/detail")
    @ResponseBody
    public ResponseData detail(OrderParam orderParam) {
        Order detail = this.orderService.getById(orderParam.getId());
        return ResponseData.success(detail);
    }

    /**
     * 查询列表
     *
     * @author Dong
     * @Date 2023-06-09
     */
    @ResponseBody
    @RequestMapping("/list")
    public LayuiPageInfo list(OrderParam orderParam) {
        return this.orderService.findPageBySpec(orderParam);
    }

}


